/**
 * routor守卫
 */
import router from '@/router'
import store from '@/store'
import i18n from '@/i18n'

// 白名单
const whiteList = ['/index', '/login', '/register', '/lost/apply', '/lost/show', '/vaccine/create']

// 判断传入的数据是不是白名单内的数据
const isInWhiteList = (path) => {
  for (const i in whiteList) {
    if (path.startsWith(whiteList[i])) {
      return true
    }
  }
  return false
}

/**
 * 路由前置守卫
 */
// 全局前置首位 跳转前动作
router.beforeEach(async (to, from, next) => {
  // 设置title
  if (to.meta.title) { // 判断是否有标题
    document.title = to.meta.title
  }
  if (store.getters.token) {
    // 1.用户已经登录，则不允许进入login
    // 获取用户类型
    const userType = store.getters.userType
    // console.log('userType', userType)
    if (to.path === '/login') {
      if (userType === 'APPLICANT') {
        next('/applicant/userInfo')
      } else {
        next('/')
      }
    } else {
      if (userType === 'APPLICANT' && to.path.indexOf('applicant') === -1) {
        // 如果登录对象是应聘者，跳转路径不包含applicant，直接跳转到应聘者首页
        next('/applicant/userInfo')
      } else {
        next()
      }
      // 判断用户资料是否存在，如果不存在，则获取用户信息 如果是白名单的不需要去获取
      if (!store.getters.hasUserInfo && !isInWhiteList(to.path)) {
        await store.dispatch('user/getUserInfo')
      }
    }
  } else {
    // 2.用户未登录，只允许进入login
    if (isInWhiteList(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
})
